// 全局挂载
import './utils/utils.js'
import './utils/http.js'

// 1、在App()里面共享数据和方法：偏业务类
App({
  globalData: {},
  // 检查登录
  checkLogin() {
    // 1 获取本地token
    let token = wx.getStorageSync('token')

    // 2。判断：没有的，需要来到登录页
    if (!token) {

      // 3、获取当前页面路径
      let arr = getCurrentPages()
      let one = arr[arr.length - 1]
      let acUrl = '/' + one.route

      wx.redirectTo({
        url: '/pages/login/index?acUrl=' + acUrl,
      })
    }
  },

  // token更新 和  refreshToken更新
  async reToken(error){
    let arr = getCurrentPages();
    let one = arr[arr.length - 1]
    let acUrl = '/' + one.route

    // 正常请求：401 （会员卡过期了）
    if (error.statusCode === 401) {
      // PC原来：直接来到登录页，重新登录
      // 现在：双token！token失效了，refreshToken续费协议就会发出请求   
      // 能正常续费
      try {
        // 1、续费发起
        const { data } = await wx.http({
          url: '/refreshToken',
          method: 'POST',
          header: {
            Authorization: wx.getStorageSync("refreshToken")
          }
        })

        // 2、续费成功
        wx.setStorageSync('token', 'Bearer ' + data.token)
        wx.setStorageSync('refreshToken', 'Bearer ' + data.refreshToken)

        // 3、当前页面重新加载
        wx.redirectTo({
          url: acUrl,
        });
      }
      // 不能正常续费
      catch (error) {

        // （续费协议过期了）回到登录页
        if (error.statusCode == 401) {

          // 1、本地token没用
          wx.clearStorageSync();

          // 2、来到登录页(把当前页面路径地址携带给登录，登录成功后回到刚才的页面)
          wx.redirectTo({
            url: '/pages/login/index?acUrl=' + acUrl
          })
        }
      }
    }
  }
})